package Thread;/*
 *
 *@author:    Xavier
 *@data:      2024 - 01 - 09
 *@time:      15:07
 *
 */


// 先写一个简单的HELLO WORLD！

//首先 导入一个类 Thrad - 来自于java.long这个包
//但是这个包不需要导入 可以直接使用

// Java中，通过Thread类创建线程的方式，有多种
// 1、创建一个类，继承Thread，重写run方法
// 2、创建一个类，实现Runnable，重写run方法
// 3、继承Thread，重写run，基于匿名内部类
// 4、实现Runnable，重写run，基于匿名内部类
// 5、使用lambda表达式，表示run方法的内容
// 6、基于Callable
// 7、基于线程池


class MyThead extends Thread{
    //需要重写run
    // 这里的run相当于线程的入口、方法
    // 线程具体跑起来后，需要做的事情
    // 不仅仅要创建出来，还需要调用它

    @Override
    public void run() {

        while (true) {
            System.out.println("hello world!");
            try {
                // 这里只能try catch 不能throws
                // 此处是方法重写，对于父类的run方法来说，就没有throws xxx 异常这样的设定
                // 在重写的时候，也就不能throws异常
                Thread.sleep(1000);
            }catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Demo01 {
    public static void main(String[] args) {
        MyThead myThead = new MyThead();
        myThead.start(); // 这里就是创建线程
                         // 这个操作会在底层调用OS提供“创建线程”的API，
                         // 同时就会在OS内核中创建出对用的PCB结构，加入到链表中
                         // 这个线程接下来的工作就是执行上面刚刚重写的run方法

    }
}
